#include "Menu.h"
int OLED_LINE = 4; // >最大行数
/* Private includes ----------------------------------------------------------*/
/*你要用到的头文件起始位   USER CODE BEGIN Includes */

//例：（用你自己的oled.h即可）
#include "oled.h"

/*你要用到的头文件结束位   USER CODE END Includes */
/*-----------------------------------------------------------------------------*/

/*在修改以下代码可以对样式进行修改，可以使用你自己的OLED实现函数*/

/**
 * @brief 未选中字符串打印的样式
 * @param x OLED横坐标
 * @param y OLED横坐标
 * @param str 打印字符串
 */
void MenuOLED_PrintString_N(uint8_t x, uint8_t y, char *str){
  OLED_PrintString(x, y, str, &font16x16, OLED_COLOR_NORMAL);
}

/**
 * @brief 选中字符串打印的样式
 * @param x OLED横坐标
 * @param y OLED横坐标
 * @param str 打印字符串
 */
void MenuOLED_PrintString_R(uint8_t x, uint8_t y, char *str){
  OLED_PrintString(x, y, str, &font16x16, OLED_COLOR_REVERSED);
}

/**
 * @brief 一般无需修改。
 * @details 未选中字符串第 line行 打印的样式
 * @param MenuNode
 * @param line
 */
void menuOLED_LineX_N(MenuNode * MenuNode, int line){
  MenuOLED_PrintString_N(0, (line-1)*16, MenuNode->description);
}

/**
 * @brief 一般无需修改。
 * @details 选中字符串第 line行 打印的样式
 * @param MenuNode
 * @param line
 */
void menuOLED_LineX_R(MenuNode * MenuNode, int line){
  MenuOLED_PrintString_R(0, (line-1)*16, MenuNode->description);
}
/*-----------------------------------------------------------------------------*/
MenuNode Core_Menu;
MenuNode a;
MenuNode b;
MenuNode c;
MenuNode d;
MenuNode e;
MenuNode f;
MenuNode g;
MenuNode h;
void Menu_Init() {
  a = *CREATE_FUNCTION_NODE("a", block_test_func, &Core_Menu);
  b = *CREATE_FUNCTION_NODE("b", block_test_func, &Core_Menu);
  c = *CREATE_FUNCTION_NODE("c", block_test_func, &Core_Menu);
  d = *CREATE_FUNCTION_NODE("d", block_test_func, &Core_Menu);
  e = *CREATE_CONTAINER_NODE("e", &Core_Menu, &f, &g, &h);
  f = *CREATE_FUNCTION_NODE("f", block_test_func, &Core_Menu);
  g = *CREATE_FUNCTION_NODE("g", block_test_func, &Core_Menu);
  h = *CREATE_FUNCTION_NODE("h", block_test_func, &Core_Menu);
  Core_Menu = *CREATE_CONTAINER_NODE("Core", NULL, &a, &b, &c, &d, &e);
  initMenuControler(&globalMenuControler, &Core_Menu);
}